﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;

namespace AvaProvi
{
    [Serializable]
    public class clsFotos:clsEstado,IControlEstados
    {
        #region Propiedades
        public clsInmueble_CRN Inmueble { get; set; }
        public clsFoto_CRN Fachada { get; set; }
        public clsFoto_CRN Interior1 { get; set; }
        public clsFoto_CRN Interior2 { get; set; }
        public clsFoto_CRN Banio { get; set; }
        public clsFoto_CRN Cocina { get; set; }
        public clsFoto_CRN Entorno { get; set; }
        public clsFoto_CRN Croquis { get; set; }
        public clsFoto_CRN Planta { get; set; }
        public BindingList<clsFoto_CRN> OtrasFotos { get; set; }
        #endregion

        #region Constructor
        public clsFotos(clsInmueble_CRN objInmueble)
        {
            this.Inmueble = objInmueble;
            this.Banio = new clsFoto_CRN(this, "Baño");
            this.Cocina = new clsFoto_CRN(this, "Cocina");
            this.Croquis = new clsFoto_CRN(this, "Croquis de Localización");
            this.Entorno = new clsFoto_CRN(this, "Entorno");
            this.Fachada = new clsFoto_CRN(this, "Fachada Principal");
            this.Interior1 = new clsFoto_CRN(this, "Sala Comedor");
            this.Interior2 = new clsFoto_CRN(this, "Recámaras");
            this.Planta = new clsFoto_CRN(this, "Croquis del Inmueble");
            this.OtrasFotos = new BindingList<clsFoto_CRN>();
        }
        #endregion

        #region Métodos

        public bool Guardar()
        {
            if (this.DatosValidos())
            {
                this.Fachada.Guardar();
                this.Interior1.Guardar();
                this.Interior2.Guardar();
                this.Banio.Guardar();
                this.Cocina.Guardar();
                this.Entorno.Guardar();
                this.Croquis.Guardar();
                this.Planta.Guardar();
                foreach (clsFoto_CRN objFoto in this.OtrasFotos)
                {
                    objFoto.Guardar();
                }
                return true;
            }
            return false;
        }

        public bool DatosValidos()
        {
            if (!this.Croquis.DatosValidos())
                return false;
            if (!this.Banio.DatosValidos())
                return false;
            if (!this.Cocina.DatosValidos())
                return false;
            if (!this.Entorno.DatosValidos())
                return false;
            if (!this.Fachada.DatosValidos())
                return false;
            if (!this.Interior1.DatosValidos())
                return false;
            if (!this.Interior2.DatosValidos())
                return false;
            if (!this.Planta.DatosValidos())
                return false;
            return true;
        }

        public static clsFotos RecuperaFotoDeAvaluo(clsInmueble_CRN objInmueble)
        {
            clsFotos objFotos = new clsFotos(objInmueble);
            objFotos.Fachada = clsFoto_CRN.RecuperaFotoDeInmueble(objFotos, "Fachada Principal");
            objFotos.Interior1 = clsFoto_CRN.RecuperaFotoDeInmueble(objFotos, "Sala Comedor");
            objFotos.Interior2 = clsFoto_CRN.RecuperaFotoDeInmueble(objFotos, "Recámaras");
            objFotos.Banio = clsFoto_CRN.RecuperaFotoDeInmueble(objFotos, "Baño");
            objFotos.Cocina = clsFoto_CRN.RecuperaFotoDeInmueble(objFotos, "Cocina");
            objFotos.Entorno = clsFoto_CRN.RecuperaFotoDeInmueble(objFotos, "Entorno");
            objFotos.Croquis = clsFoto_CRN.RecuperaFotoDeInmueble(objFotos, "Croquis de Localización");
            objFotos.Planta = clsFoto_CRN.RecuperaFotoDeInmueble(objFotos, "Croquis del Inmueble");
            objFotos.OtrasFotos = clsFoto_CRN.RecuperaFotos(objFotos,"Otros");
            return objFotos;
        }

        #endregion
    }
}
